﻿#include "avatarwidget.h"

AvatarWidget::AvatarWidget(QWidget *parent)
    : QWidget(parent), m_cornerRadius(0)
{
    setMinimumSize(50, 50); // 设置最小尺寸
}
// 设置头像图片
void AvatarWidget::setAvatar(const QPixmap &pixmap)
{
    m_avatar = pixmap.scaled(size(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
    update(); // 触发重绘
}

// 设置圆角尺寸
void AvatarWidget::setCornerRadius(int radius)
{
    m_cornerRadius = radius;
    update(); // 触发重绘
}

// 重写 paintEvent 方法，绘制圆角头像
void AvatarWidget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);

    // 如果头像图片为空，则不绘制
    if (m_avatar.isNull())
    {
        return;
    }

    // 创建圆角矩形路径
    QPainterPath path;
    path.addRoundedRect(rect(), m_cornerRadius, m_cornerRadius);

    // 设置裁剪区域
    painter.setClipPath(path);

    // 绘制头像图片
    painter.drawPixmap(rect(), m_avatar);
}
